home *** CD-ROM | disk | FTP | other *** search
/ Carousel / CAROUSEL.cdr / mactosh / lang / lsc30p4u.sit / Math Library Changes < prev    next >
Text File  |  1989-01-27  |  4KB  |  108 lines

  1.  
  2. Math Library Changes
  3. 1/16/89
  4.  
  5. The math libraries have been redesigned to be easier to use.  A number of
  6. users reported that the organization was confusing.
  7.  
  8. In particular, it was difficult to keep straight when one should #define
  9. the _MC68881_ and _ERRORCHECK_ macros.  This has now been simplified.
  10.  
  11.  
  12. SUMMARY OF CHANGES
  13. ------------------
  14.  
  15. You no longer need to #define the _MC68881_ or _ERRORCHECK_ symbols.
  16.  
  17. You no longer need to rebuild the math libraries to match your use of
  18. _ERRORCHECK_.  The libraries can now be used in either error-checking or
  19. non-error-checking modes.  Error checking is controlled by a new macro,
  20. _NOERRORCHECK_.
  21.  
  22. Isn't _NOERRORCHECK_ just _ERRORCHECK_ in disguise?  Sort of, but there
  23. are two important differences:
  24.     
  25.     (1) Previously, if you failed to #define _ERRORCHECK_ when you
  26.         should, or #defined it when you shouldn't, you would get link
  27.         errors.  This won't happen with _NOERRORCHECK_.
  28.  
  29.     (2) The change reflects the fact that error checking is always
  30.         the default:  unless you specifically go to the trouble to
  31.         #define _NOERRORCHECK_, you'll get error checking.
  32.  
  33. If you have existing code that #defines _MC68881_ or _ERRORCHECK_, you
  34. needn't worry.  The "math.h" header overrides your definitions, based
  35. on the project option setting (for _MC68881_) and the _NOERRORCHECK_
  36. macro (for _ERRORCHECK_).
  37.  
  38.  
  39. WHICH LIBRARY IS WHICH
  40. ----------------------
  41.  
  42. There are three math libraries, "Math", "Math881", and "MathHybrid":
  43.  
  44.     (1) "Math" uses SANE arithmetic on SANE values.
  45.  
  46.     (2) "Math881" uses 68881 arithmetic on 68881 values.
  47.  
  48.     (3) "MathHybrid" uses SANE arithmetic on 68881 values.
  49.  
  50. If you are not using the 68881, use "Math".  If you are using the 68881,
  51. use "Math881" for speed, or "MathHybrid" for precision.
  52.  
  53. Make sure the 68881 project option is set correctly for the library you
  54. are using.  If you are using "Math", the option should be OFF (unchecked).
  55. If you are using "Math881" or "MathHybrid", the option should be ON
  56. (checked).
  57.  
  58. You no longer need to #define the _MC68881_ macro when using the 68881.
  59. This is now handled automatically by "math.h" based on the project setting.
  60.  
  61.  
  62. ERROR CHECKING
  63. --------------
  64.  
  65. The functions defined in "Math" perform standard error checking.  To
  66. suppress error checking, you must rebuild "Math".  The remainder of this
  67. section applies ONLY to the "Math881" and "MathHybrid" libraries.
  68.  
  69. The functions defined in "Math881" and "MathHybrid" come in error-checking
  70. and non-error-checking versions.  The non-error-checking functions have
  71. names, like "_sin", that begin with an underscore.  The error-checking
  72. functions have names, like "sin", that do not begin with an underscore.
  73.  
  74. This allows you to choose which math operations employ error checking.
  75. Especially when using "Math881", suppressing error checking may result in
  76. a noticeable improvement in performance.
  77.  
  78. To suppress error checking on all math operations throughout a particular
  79. file, begin the file with:
  80.  
  81.     #define _NOERRORCHECK_
  82.     #include <math.h>
  83.  
  84. This defines a series of macros, such as "#define sin(x) _sin(x)", which
  85. map the error-checking names onto the non-error-checking functions.
  86.  
  87. You no longer need to #define the _ERRORCHECK_ macro when using error
  88. checking.  This is now handled automatically by "math.h" based on the
  89. _NOERRORCHECK_ macro.
  90.  
  91.  
  92. REBUILDING THE MATH LIBRARIES
  93. -----------------------------
  94.  
  95. There is no longer any need to rebuild the math libraries just to control
  96. error checking.  However, if you are not using error checking at all, you
  97. may wish to build smaller libraries that contain no error-checking code.
  98.  
  99. Each of the files "Math.c", "Math881.c", and "MathHybrid.c" begins with:
  100.  
  101.     /*#define _NOERRORCHECK_*/
  102.     #include "math.h"
  103.  
  104. Simply un-comment the macro definition and rebuild the corresponding
  105. project.
  106.  
  107. Note that the math library sources no longer #include "config.h".
  108.